//
//  UIImage+AsyncDraw.swift
//  Weibo
//
//  Created by 米易雅克 on 16/4/26.
//  Copyright © 2016年 米易雅克. All rights reserved.
//

import UIKit
//异步绘制圆形头像
extension UIImage {

    func HM_AsyncDrawImage(var size: CGSize? ,bkgColor: UIColor? = UIColor.whiteColor(), isCorner: Bool = false, drawFinsh: (image: UIImage) -> ()) {
        dispatch_async(dispatch_get_global_queue(0, 0)) { 
            let start = CACurrentMediaTime()//开始时间
            if size == nil {
            //外接没有传入size，使用图片的自己的大小
                size = self.size
            }
            //获取上下文的rect
            let rect = CGRect(origin: CGPointZero, size: size!)
            //开启上下文
            //不透明度：true 表示不透明，false表示透明
            UIGraphicsBeginImageContextWithOptions(size!, bkgColor != nil , UIScreen.mainScreen().scale)
            
            //设置背景颜色
            bkgColor?.setFill()
            UIRectFill(rect)
            
            //圆角设置
            if isCorner {

                //路径
                let path = UIBezierPath(ovalInRect: rect)
                //然后面绘制的元素在路径里面
                path.addClip()
            }
            self.drawInRect(rect)
            
            //获取图片
            let newImage = UIGraphicsGetImageFromCurrentImageContext()
            
            //结束上下文
            UIGraphicsEndImageContext()
            //结束时间
            let end = CACurrentMediaTime()
            print("异步绘制时间:\(start - end)")
            
            //主线程返回绘制好的图片
            dispatch_async(dispatch_get_main_queue(), { 
                drawFinsh(image: newImage)
            })
        }
    }
    
}
